feat(app,api): manage system prompts and skills via web UI menu panels#238
feat(app,api): manage system prompts and skills via web UI menu panels#238konard wants to merge 16 commits intoProverCoderAI:mainfrom
Conversation
Adding .gitkeep for PR creation (default mode). This file will be removed when the task is complete. Issue: ProverCoderAI#237
Working session summaryHere's my proposed approach. Given the issue scope (touches lib/api/app), I want to confirm the shape before implementing. FindingsSystem prompts are repo-root files that already get auto-copied into the container by the entrypoints:
Skills are repo-root directories synced by the codex entrypoint into Per-project workspace is resolved via Proposed implementation
Tradeoff to flag: this is a sizable change (new API service, two routes, two new menus + panels, new UI primitive). A leaner alternative would be a single "Files" panel that exposes a generic editor for the three prompts and known skill paths. The structured-per-agent approach above is more user-friendly but more code. Do you want me to proceed with the structured approach as described, or prefer the leaner single "Files" editor? This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $2.404150📊 Context and tokens usage:Claude Opus 4.7: (2 sub-sessions)
Total: (29.9K new + 147.6K cache writes + 1.3M cache reads) input tokens, 13.3K output tokens, $2.076555 cost Claude Haiku 4.5:
Total: (1.4K new + 86.0K cache writes + 1.7M cache reads) input tokens, 10.1K output tokens, $0.327595 cost 🤖 Models used:
📎 Log file uploaded as Gist (2135KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart triggered (iteration 1)Reason: CI failures detected Starting new session to address the issues. Auto-restart-until-mergeable mode is active. This run will stop after 5 restart iterations. |
Add runtime override hooks for the per-agent system prompts and the project Codex skills sync: - CLAUDE_SYSTEM_PROMPT_OVERRIDE / CLAUDE_SYSTEM_PROMPT_OVERRIDE_FILE replace the body inside the managed CLAUDE.md block while keeping the docker-git managed markers so updates remain idempotent. - CODEX_SYSTEM_PROMPT_OVERRIDE / CODEX_SYSTEM_PROMPT_OVERRIDE_FILE replace the managed lines inside ~/.codex/AGENTS.md. - GEMINI_SYSTEM_PROMPT_OVERRIDE / GEMINI_SYSTEM_PROMPT_OVERRIDE_FILE replace the body inside ~/.gemini/GEMINI.md. - CODEX_EXTRA_SKILLS_PATHS lets users mount additional skill trees (format "prio-name::relative/path", comma- or newline-separated) alongside the built-in priority list. Each hook prefers the *_FILE variant over the inline value, falling back to the existing default content so existing deployments behave identically when no overrides are set. Mirror the lib changes into packages/app/src/lib, document the new env vars in the CLI help text, and add tests asserting the rendered entrypoint contains the new override scaffolding.
Demonstrates the new CLAUDE/CODEX/GEMINI system-prompt overrides and the CODEX_EXTRA_SKILLS_PATHS hook. The .ts/.mjs renderers reproduce the files written into ~/.claude, ~/.codex, ~/.gemini at container start so reviewers can compare default vs overridden output without spinning up a container.
CI status
The 14 lint errors in the latest
Files modified in this PR ( |
CI status (final)Passing on this PR (10/14):
Failing — all three are pre-existing on
None of these errors are in files this PR modifies. The PR's diff scope is:
Resolving the pre-existing failures is out of scope for issue #237. The new tests added in |
🔄 Auto-restart-until-mergeable Log (iteration 1)This log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $12.334705📊 Context and tokens usage:Claude Opus 4.7: (4 sub-sessions)
Total: (6.8K new + 371.7K cache writes + 15.2M cache reads) input tokens, 95.0K output tokens, $12.334705 cost 🤖 Models used:
📎 Log file uploaded as Gist (7139KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart triggered (iteration 2)Reason: CI failures detected; Uncommitted changes Starting new session to address the issues. Auto-restart-until-mergeable mode is active. This run will stop after 5 restart iterations. |
🔄 Auto-restart-until-mergeable Log (iteration 2)This log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $5.175366📊 Context and tokens usage:Claude Opus 4.7: (2 sub-sessions)
Total: (2.4K new + 145.7K cache writes + 7.2M cache reads) input tokens, 25.3K output tokens, $5.175366 cost 🤖 Models used:
📎 Log file uploaded as Gist (9421KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
Working session summaryAll 14 CI checks pass on PR #238. The fix was achieved by merging Final state:
This summary was automatically extracted from the AI working session output. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |
|
Runtime verification after merging current Branch head: The screenshots below were captured from a live docker-git SSH terminal against a demo container after setting |
|
Не, какая-то херня. Мне надо было что бы у нас было меню обычное где можнро было бы редактировать System Promts и SKILLS |
|
🤖 AI Work Session Started Starting automated work session at 2026-05-09T06:47:14.590Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait for the session to finish, and provide your feedback. |
Add Web UI panels to view and edit per-project system prompts (CLAUDE.md / AGENTS.md / GEMINI.md) and skill files across the conventional skill scopes (.skills, .agents/skills, .claude/skills, .codex/skills, .gemini/skills). Wire matching API endpoints and controller actions for CRUD on prompts and skills.
Add screenshots of the new menu items and panel UIs introduced in this PR: - menu-prompts-skills.png: docker-git menu showing entries 5 (Prompts) and 6 (Skills) - panel-prompts.png: Project system prompts panel (CLAUDE.md / AGENTS.md / GEMINI.md editor) - panel-skills.png: Project skills panel (SKILL.md editor across conventional skill folders)
Working session summaryTask complete. Summary:
PR: #238 This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $30.288791📊 Context and tokens usage:Claude Opus 4.7: (8 sub-sessions)
Total: (21.0K new + 827.2K cache writes + 39.7M cache reads) input tokens, 195.0K output tokens, $30.000349 cost Claude Haiku 4.5:
Total: (3.5K new + 92.8K cache writes + 1.2M cache reads) input tokens, 10.6K output tokens, $0.288442 cost 🤖 Models used:
📎 Log file uploaded as Gist (13382KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart triggered (iteration 1)Reason: Merge conflicts detected Starting new session to address the issues. Auto-restart-until-mergeable mode is active. This run will stop after 5 restart iterations. |
Working session summaryBoth conflict resolutions look correct. The merge is complete, all local checks pass, and the branch has been pushed. CI is running. The merge conflict on the PR is resolved (state went from SummaryMerge conflicts resolved. Merged
PR: #238 This summary was automatically extracted from the AI working session output. |
🔄 Auto-restart-until-mergeable Log (iteration 1)This log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $3.027414📊 Context and tokens usage:
Total: (66 new + 91.3K cache writes + 4.3M cache reads) input tokens, 12.9K output tokens, $3.027414 cost 🤖 Models used:
📎 Log file uploaded as Gist (15064KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |
MCP runtime proof for the requested Prompts / Skills UIПроверил PR head Вывод: да, в PR появилась обычная web-menu возможность настраивать project-scoped System Prompts и Skills:
Не увидел в этом PR Skiller-like marketplace/global search/multi-agent sync. Если это обязательная часть требования, её нужно заводить отдельным follow-up scope; текущий PR закрывает обычное меню + inline project prompt/skill editing. 1. Ordinary menu contains Prompts and Skills2. Prompts panel edits real project filesAfter editing API/filesystem proof: {
"projectKey": "bfc4aac8d4a9",
"fileName": "AGENTS.md",
"exists": true,
"bytes": 117,
"hasMarker": true
}Filesystem marker: 3. Skills panel creates and edits SKILL.mdAfter selecting API/filesystem proof: {
"projectKey": "bfc4aac8d4a9",
"scopeCount": 6,
"skillExists": true,
"scope": "agents/skills",
"relativePath": ".agents/skills/pr238-ui-created-skill/SKILL.md",
"bytes": 128,
"hasMarker": true
}Filesystem marker: CIFresh CI for |
|
Skiller подключен как submodule для docker-git, и теперь запускается из той строки действий терминала, которую просили:
docker-git terminal header proofButton is in the requested terminal action row, directly after Clicking The same click opened the real Skiller Electron app from the submodule under Xvfb: Live Skiller UI screenshotsOnboarding / first launch: Dashboard with detected agents and installed skills: Skills Manager showing the seeded Projects page showing docker-git workspace Settings page showing Skiller v0.2.14: |
|
Live Skiller proof after opening my own demo container, not the existing user container. Verified with Playwright MCP on 2026-05-09:
Commit with proof screenshots: 5175459 |
|
Fixed the Skiller button behavior. Root cause: the previous button only launched the Skiller Electron process on the server-side Xvfb display, so clicking it did not open anything visible in the user's browser. What changed:
Verified with Playwright MCP on 2026-05-09:
Commit: e212b98 |






















Summary
Closes #237.
Adds two new entries to the docker-git menu — Prompts and Skills — that let operators edit per-project system prompts (CLAUDE.md / AGENTS.md / GEMINI.md) and manage SKILL.md files across the conventional skill folders, directly from the docker-git web UI.
This replaces the earlier env-var-only approach (
*_OVERRIDE/*_OVERRIDE_FILE) with a regular menu UI as requested in #238 (comment): "Мне надо было что бы у нас было меню обычное где можно было бы редактировать System Promts и SKILLS". The env-var override scaffolding inside the templates is preserved for non-interactive workflows.What changed
API (
packages/api)/projects/:projectId:GET /prompts— listCLAUDE.md,AGENTS.md,GEMINI.mdcontent/size/path under the project rootPUT /prompts/:kind— write a single prompt file (creates the directory if missing)DELETE /prompts/:kind— remove a prompt fileGET /skills— listSKILL.mdfiles across the conventional skill scopes (.skills,.agents/skills,.agents/.skills,.codex/skills,.codex/.skills)PUT /skills— create or update a SKILL.md (scopeId,name,content)DELETE /skills/:scopeId/:name— remove a SKILL.mdproject-prompts.tsandproject-skills.tsthat perform the filesystem reads/writes with Effect, Path, FileSystem.ProjectPromptParamsSchema,ProjectSkillParamsSchema, plusProjectPromptsSnapshot/ProjectSkillsSnapshottypes.Web app (
packages/app/src/web)PromptsandSkillswired throughmenu.ts,screen.ts,app-ready-url.ts,app-ready-shortcuts.ts.panel-project-prompts.tsx— three editors (Claude / Codex / Gemini) showing on-disk size, absolute path, and Save / Delete actions.panel-project-skills.tsx— list view per scope with create / edit / delete for each SKILL.md.actions-prompts.ts,actions-skills.ts,app-ready-prompt-actions.ts,app-ready-skill-actions.ts,app-ready-prompts-hook.ts,app-ready-skills-hook.ts, plus dispatch inactions-projects.ts/actions.ts.api-prompts.ts/api-prompts-schema.ts,api-skills.ts/api-skills-schema.ts.actions-shared.tsswitched to a namespace import (import type * as ApiTypes from \"./api-state-types.js\") to break the textual duplicate flagged by the jscpd lint stage.Templates (
packages/lib/src/core/templates-entrypoint)claude-extra-config.ts,codex.ts,gemini.ts,agents-notice.tskeep the existing managed-block markers so subsequent restarts still detect and refresh the rendered files idempotently.Screenshots
docker-git menu — new entries 5 (Prompts) and 6 (Skills)
Project system prompts panel
Project skills panel
Test plan
bun run vitest run(packages/app) — 244 / 244 tests across 48 files pass, including the new fixture coverage inbrowser-action-context-fixture.ts.bun run --cwd packages/lib test— unchanged; the template managed-block rendering still asserts the override scaffolding./menu/promptsand/menu/skills, captured the panel screenshots above. Empty-state copy ("Project: not selected", "Loading prompts…", "No prompt data yet.") is rendered as designed when no project is selected.Reproduction / manual check
bun run --cwd packages/api build && bun packages/api/dist/src/main.jsbun run --cwd packages/app build:web && bun packages/app/scripts/serve-dist-web.mjs.skills,.agents/skills,.agents/.skills,.codex/skills,.codex/.skills.